home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1983-05-19 | 2.6 KB | 114 lines |
- 5 CLS:KEY OFF:WIDTH 80
- 10 '====== SIMULTANEOUS EQUATIONS ====
- 12 SE$="SIMULTANEOUS EQUATIONS"
- 15 PRINT TAB(29) SE$:PRINT :PRINT
- 16 PRINT "THIS PROGRAM SOLVES SIMULTANEOUS EQUATIONS. THE NUMBER OF EQUATIONS IS FIRST"
- 17 PRINT "ENTERED, FOLLOWED BY THE COEFFICIENTS OF EACH EQUATION AND THEN THE"
- 18 PRINT "RESPECTIVE CONSTANT. THE USER MUST SUPPLY THE APPROPRIATE DATA WHEN REQUESTED."
- 19 PRINT "IF AN EQUATION DOES NOT HAVE A PARTICULAR COEFFICIENT, ENTER ZERO (0) WHEN":PRINT "PROMPTED.":PRINT :PRINT
- 20 INPUT "NUMBER OF EQUATIONS ",RA
- 25 PRINT :PRINT
- 30 CA=RA:RB=RA
- 40 '***** COEFFICIENT MATRIX *******
- 90 GOSUB 280
- 120 '***** CONSTANT MATRIX *****
- 140 GOSUB 1410
- 150 'FIND INVERSE OF MATRIX A
- 160 GOSUB 1060
- 170 'MULTIPLY INVERSE A AND VECTOR B
- 180 X=RB
- 190 PRINT
- 200 GOSUB 670
- 220 CLS:PRINT TAB(29); SE$
- 241 PRINT:PRINT
- 244 FOR I=1 TO RA
- 245 FOR J=1 TO CA
- 246 IF SGN(KB(I,J))=-1 THEN SG$=" -" ELSE SG$=" +"
- 247 IF J=1 THEN SG$=""
- 248 KB$=STR$(KB(I,J))
- 249 PRINT SG$+KB$+CHR$(96+J);
- 250 NEXT J
- 252 PRINT " =";B(I)
- 253 NEXT I
- 254 PRINT :PRINT "Where: ":'OUTPUT RESULT
- 255 FOR I=1 TO RA
- 256 PRINT " " CHR$(96+I)" =";D(I)
- 257 NEXT I
- 259 PRINT :PRINT :PRINT
- 261 PRINT "PRINT OUTPUT ? ";
- 263 A$=INKEY$: IF A$="" THEN 263
- 265 IF A$="Y" OR A$="y" THEN GOSUB 1500
- 273 PRINT :PRINT
- 274 PRINT "SOLVE ANOTHER SET OF EQUATIONS ? ";
- 275 A$=INKEY$: IF A$="" THEN 275
- 276 IF A$="Y" OR A$="y" THEN CLEAR:GOTO 5
- 277 CLS:PRINT :PRINT "Have a Nice Day":END
- 279 '=============== MATRIX READ ====================
- 280 DIM A(RA,CA), KB(RA,CA)
- 290 FOR I=1 TO RA
- 300 FOR J=1 TO CA
- 310 PRINT "Equation";I;", coefficient " CHR$(96+J) " ";
- 315 INPUT A(I,J)
- 317 KB(I,J)=A(I,J)
- 320 NEXT J
- 325 PRINT
- 330 NEXT I
- 335 PRINT
- 340 RETURN
- 650 '============ MATRIX MULTIPLY, B IS A VECTOR =========
- 660 'SU IS SUM OF MULTIPLIED ELEMENTS
- 670 DIM D(RB)
- 680 SU=0
- 690 FOR I=1 TO RA
- 700 FOR J=1 TO CA
- 710 SU=SU+(A(I,J)*B(J))
- 720 NEXT J
- 730 D(I)=SU
- 740 SU=0
- 750 NEXT I
- 760 RETURN
- 1040 '================ MATRIX INVERSION =====================
- 1050 'MAT A IS REPLACED WITH ITS INVERSE
- 1060 FOR K=1 TO RA
- 1070 FOR J=1 TO RA
- 1080 IF J=K GOTO 1100
- 1090 A(K,J)=A(K,J)/A(K,K)
- 1100 NEXT J
- 1110 A(K,K)=1/A(K,K)
- 1120 FOR I=1 TO RA
- 1130 IF I=K GOTO 1180
- 1140 FOR J=1 TO RA
- 1150 IF J=K GOTO 1170
- 1160 A(I,J)=A(I,J)-A(K,J)*A(I,K)
- 1170 NEXT J
- 1180 NEXT I
- 1190 FOR I=1 TO RA
- 1200 IF I=K GOTO 1220
- 1210 A(I,K)=-A(I,K)*A(K,K)
- 1220 NEXT I
- 1230 NEXT K
- 1240 RETURN
- 1400 '=============== READ VECTOR B ============================
- 1410 DIM B(RB)
- 1420 FOR I=1 TO RB
- 1430 PRINT "Constant for equation";I;
- 1435 INPUT B(I)
- 1440 NEXT I
- 1450 RETURN
- 1490 '============ PRINT OUTPUT ===============
- 1500 LPRINT TAB(29); SE$
- 1505 FOR BL=1 TO 5:LPRINT :NEXT BL
- 1510 FOR I=1 TO RA
- 1520 FOR J=1 TO CA
- 1530 IF SGN(KB(I,J))=-1 THEN SG$=" -" ELSE SG$=" +"
- 1540 IF J=1 THEN SG$=""
- 1550 KB$=STR$(KB(I,J))
- 1560 LPRINT SG$+KB$+CHR$(96+J);
- 1570 NEXT J
- 1580 LPRINT " =";B(I)
- 1590 NEXT I
- 1600 LPRINT :LPRINT "Where: ":'OUTPUT RESULT
- 1610 FOR I=1 TO RA
- 1620 LPRINT " " CHR$(96+I)" =";D(I)
- 1630 NEXT I
-